#ifndef MAP_H_INCLUDED
#define MAP_H_INCLUDED
#include <cstdlib>
#include <SFML/Graphics.hpp>
#include <string>
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
#include <time.h>
class Terrain;
class Vue;
#include "..\GamePlay\general.h"
#include "..\System\Option.h"
class Puit
{
    public:
    Puit(int xp,int yp);
    bool CanPlace(int x);
    int GetFuel();
    void Afficher(sf::RenderWindow *app);
    void ReduireFuel();

    private:
    int m_fuel;
    int ymin,ymax;
    sf::Texture *image_puit;
    sf::Sprite sprite_puit, sprite_fuel;
};
class Terrain
{
    public:
    Terrain(std::string fichier);
    Terrain();
    bool contact(int x, int y);
    bool contact(sf::Vector2f position);
    int cherTerrain(int x, int y); // Gere de trouver le premier point en fonction de x, si y préciser
                                    // alors on cherche le plus proche Y.
    void afficherTerrain(sf::RenderWindow *app, int x1);
    void afficherFond(sf::RenderWindow *app);
    static void generationAlea(int seed, int taille, int pas, int amplitude);
    std::string GetFichier();
    void SetFichier(std::string fichier);
    void setPixel(int x, int y);
    bool InPuit(int x);
    Puit* GetPuit(int x);
    void refresh(sf::RenderWindow *app);
    sf::Vector2f GetTextureSize();
    sf::Vector2f GetBaseSize(int id);

    private:
    std::vector<sf::Vector2f> terre;
    std::vector<Puit> m_puit;
    sf::Texture fond_terre, collision;
    std::vector<sf::Texture*> devant_terre;
    sf::Sprite fond;
    sf::Vector2f pos_base[4];
    std::vector<sf::Sprite> devant;
    int spawn1, spawn2, nbtank;
    std::string m_fichier;
};



#endif // MAP_H_INCLUDED
